<?php 
	include('lib/session.php');
	include('lib/data_acces.php');
	include('lib/constructor.php');
	include('lib/mysql.php');
	include('lib/paging.lib.php');
	include('sidebar.php');
	include('lib/upload.lib.php');
	/*
	Autor:
	Fecha:
	*/
	class documentos
	{
		//funcion que lista los documentos en linea
		function listar($data_acces)
		{
			$list='';
			$tlist = new template;
			$docum = new mydb($data_acces['host'], $data_acces['user'], $data_acces['pass'], $data_acces['db']);
			$sql="SELECT
					`documento`.`nombre_doc`,
					`documento`.`descripcion_doc`,
					`documento`.`fecha_doc`,
					`documento`.`id_doc`,
					`documento`.`id_user`,
					`documento`.`path_doc`,
					`documento`.`publicar_doc`
					FROM
					`documento`
					WHERE
					`documento`.`activo_doc` =  '1'";
			$docum->db_query($sql);
			$cont=1;
			while($docum->db_next())
			{
				$docum_list= $docum->row_object;
				$id_doc=$docum_list->id_doc;
				$nombre_doc=$docum_list->nombre_doc;
				$descripcion_doc=$docum_list->descripcion_doc;
				$fecha_doc=$docum_list->fecha_doc;
				$path_doc=$docum_list->path_doc;
				$publicado=$docum_list->publicar_doc;
				
				if($publicado == 0)
				{
					$estado='Publicar';
				}
				else
				{
					$estado='No publicar';
				}
				
				$list.='<tr>
							<td>&nbsp;'.$cont.'&nbsp;</td>
							<td><a href="'.$path_doc.'" title="Click Aqui para descargar el documento" target="_blank">'.$nombre_doc.'&nbsp;</a></td>
							<td><a href="'.$path_doc.'" title="Click Aqui para descargar el documento" target="_blank">'.$descripcion_doc.'&nbsp;</a></td>
							<td>'.$fecha_doc.'&nbsp;</td>
							<td><a href="?do=modificar/'.$id_doc.'" title="">Modificar</a></td>
							<td><a href="?do=eliminar/'.$id_doc.'" title="">Eliminar</a></td>
							<td><a href="?do=publicar/'.$id_doc.'" title="">'.$estado.'</a></td>
						  </tr>';
				$cont++;
			}
			if($docum->num_rows == 0)
			{
				$list='<tr><td colspan="6" align="center">No existe ningun archivo en linea</td></tr>';
			}
			echo mysql_error();
			$docum->db_close();
			$tlist->set_template('./lib/html/documentos/lista.html');
			$tlist->set_parameter('content', $list);
			return $tlist->show();
		}
		//funcion que crea el formulario de cargado de archivos
		function agregar($data_acces)
		{
			$list='';
			$tdocumento = new template;
			$tdocumento->set_template('./lib/html/documentos/nuevo.html');
			$tdocumento->set_parameter('content', $list);
			$list=$tdocumento->show();
			return $list;
		}
		//funcion que agregar el documento a la base de datos y sube el archivo al servidor
		function agregar_doc($data_acces)
		{
			$list='';
			$docum = new mydb($data_acces['host'], $data_acces['user'], $data_acces['pass'], $data_acces['db']);
			$id_usu=$_SESSION['id_user'];
			$nombre=$_POST['nombre'];
			$descripcion=$_POST['descripcion'];
			$tipo=$_POST['tipo'];
			$archivo=$_FILES['archivo'];
			
			//seccion que se encarga de subir el archivo
			$Dir='documentos/'.$_SESSION['id_user'];
			if(!is_dir($Dir)){
				chmod('documentos', 0755);
				@mkdir($Dir);
				chmod($Dir, 0777);
			}
			$sendFile= new upload;
			$sendFile->SetDirectory($Dir);
			$sendFile->SetFile('archivo');//esto fue lo que modifique
			$sendFile->Size('archivo');
			$newFilename=substr($_FILES['archivo']['name'],0,strlen($_FILES['archivo']['name'])-4);  
			$sendFile->UploadFile($newFilename) ;
			$nombreArchivo=$_FILES['archivo']['name'];
			$path=$Dir.'/'.$nombreArchivo;
			
			$sql="insert into  documento(`id_user`, `nombre_doc`, `descripcion_doc`, `fecha_doc`, `path_doc`, `nomarchivo_doc`, `activo_doc`) 
					value('".$id_usu."','".$nombre."','".$descripcion."', Now(),'".$path."','".$nombreArchivo."', '1')";
			$docum->db_insert($sql);
			$error=mysql_error();
			$docum->db_close();
			if($error != '')
			{
				$list.='<div class="error">Lo siento, ocurrio un error en la operacion, porfavor intente de nuevo.<br />
						Si continua el error contacte con el administrador</div><br /><br />';
			}
			else
			{
				$list.='<div class="action">Los datos del documento han sido guardados exitosamente.</div><br /><br />';
			}
			$list.=documentos::listar($data_acces);
			return $list;
		}
		//funcion que modifica y cambia el documento y archivo
		function modificar($data_acces)
		{
			$list='';
			$param = explode('/', $_GET['do'], 6);
			$id_doc=$param[1];
			$docum = new mydb($data_acces['host'], $data_acces['user'], $data_acces['pass'], $data_acces['db']);
			$sql="SELECT
					`documento`.`nombre_doc`,
					`documento`.`descripcion_doc`,
					`documento`.`path_doc`,
					`documento`.`nomarchivo_doc`,
					`documento`.`fecha_doc`,
					`documento`.`id_doc`,
					`documento`.`id_user`
					FROM
					`documento`
					WHERE
					`documento`.`activo_doc` =  '1' AND
					`documento`.`id_doc` = '".$id_doc."'";
			$docum->db_query($sql);
			$docum->db_next();
			$docum_list= $docum->row_object;
			$nombre_doc=$docum_list->nombre_doc;
			$descripcion_doc=$docum_list->descripcion_doc;
			$path_doc=$docum_list->path_doc;
			$archivo_doc=$docum_list->nomarchivo_doc;
			$opcion='';
			//$nombre_archivo=$docum_list->;
			if($docum->num_rows == 0)
			{
				$list='No existe ese archivo o es un archivo incorrecto';
			}
			$docum->db_close();
			$tdocumento = new template;
			$tdocumento->set_template('./lib/html/documentos/modificar.html');
			$tdocumento->set_parameter('nombre_doc', $nombre_doc);
			$tdocumento->set_parameter('opcion', $opcion);
			$tdocumento->set_parameter('descripcion_doc', $descripcion_doc);
			$tdocumento->set_parameter('nombre_archivo', $archivo_doc);
			$tdocumento->set_parameter('id_doc', $id_doc);
			$list=$tdocumento->show();
			return $list;
		}
		//funcion que modifica el documento en la base de datos y cambia o sobreescribe el documento
		function modificar_doc($data_acces)
		{
			$list='';
			$docum = new mydb($data_acces['host'], $data_acces['user'], $data_acces['pass'], $data_acces['db']);
			$param = explode('/', $_GET['do'], 6);
			$id_doc=$param[1];
			$id_usu=$_SESSION['id_user'];
			$nombre=$_POST['nombre'];
			$descripcion=$_POST['descripcion'];
			$tipo=$_POST['tipo'];
			$archivo=$_FILES['archivo']['name'];
			$condition='';
			
			if($archivo != ''){
				//secion que se encarga de subir el archivo
				$Dir='documentos/'.$_SESSION['id_user'];
				if(!is_dir($Dir)){
					chmod('documentos', 0755);
					@mkdir($Dir);
					chmod($Dir, 0777);
				}
				$sendFile= new upload;
				$sendFile->SetDirectory($Dir);
				$sendFile->SetFile('archivo');//esto fue lo que modifique
				$sendFile->Size('archivo');
				$newFilename=substr($_FILES['archivo']['name'],0,strlen($_FILES['archivo']['name'])-4);  
				$sendFile->UploadFile($newFilename) ;
				$nombreArchivo=$_FILES['archivo']['name'];
				$path=$Dir.'/'.$nombreArchivo;
				$condition="`documento`.`path_doc`= '".$path."', `documento`.`nomarchivo_doc`='".$nombreArchivo."',";
			}
			
			$sql="update documento set ".$condition." `id_user`='".$id_usu."', `nombre_doc`='".$nombre."', `descripcion_doc`='".$descripcion."', 
					`fecha_doc`=Now(), `path_doc`= '".$path."' where id_doc='".$id_doc."'";
			$docum->db_insert($sql);
			$error=mysql_error();
			$docum->db_close();
			if($error != '')
			{
				$list.='<div class="error">Lo siento, ocurrio un error en la operacion, porfavor intente de nuevo.<br />
						Si continua el error contacte con el administrador</div><br /><br />';
			}
			else
			{
				$list.='<div class="action">Los datos del documento han sido guardados exitosamente.</div><br /><br />';
			}
			$docum = new mydb($data_acces['host'], $data_acces['user'], $data_acces['pass'], $data_acces['db']);
			$sql="";
			$docum->db_next();
			$list.=documentos::listar($data_acces);
			return $list;
		}
		//funcion que elimina el documento y el archivo
		function eliminar($data_acces)
		{
			$list='';
			$param=explode('/', $_GET['do'], 6);
			$id_doc=$param[1];
			$docum = new mydb($data_acces['host'], $data_acces['user'], $data_acces['pass'], $data_acces['db']);
			$sql="delete from documento where id_doc='".$id_doc."'";
			$docum->db_insert($sql);
			$error=mysql_error();
			$docum->db_close();
			if($error != '')
			{
				$list.='<div class="error">Lo siento, ocurrio un error en la operacion, porfavor intente de nuevo.<br />
						Si continua el error contacte con el administrador</div><br /><br />';
			}
			else
			{
				$list.='<div class="action">Los datos del documento han sido borrados exitosamente.</div><br /><br />';
			}
			$list.=documentos::listar($data_acces);
			return $list;
		}
		//metodo que revisa que el documento es publico o no
		function documento_publico($id_doc, $data_acces)
		{
			$list[0]=0;
			$sql="SELECT
				`documento`.`nombre_doc`
				FROM
				`documento`
				WHERE
				`documento`.`id_doc` =  '".$id_doc."' AND
				`documento`.`publicar_doc` =  '1' AND
				`documento`.`activo_doc` =  '1'";
			$docum = new mydb($data_acces['host'], $data_acces['user'], $data_acces['pass'], $data_acces['db']);
			$docum->db_query($sql);
			$num_doc = $docum->num_rows;
			$docum->db_next();
			$docum_list= $docum->row_object;
			$nombre_doc=$docum_list->nombre_doc;
			$error=mysql_error();
			$docum->db_close();
			if($num_doc > 0)
			{
				$list[0]=1;
				$list[1]=$nombre_doc;
			}
			return $list;
		}
		//metodo que vuelve publico el documento o lo vuelve privado
		function publicar($data_acces)
		{
			$list='';
			$param = explode('/', $_GET['do'], 6);
			$id_doc=$param[1];
			$result=documentos::documento_publico($id_doc, $data_acces);
			$sql='';
			if($result[0] == 1)
			{
				$sql="update `documento` set `documento`.`publicar_doc` =  '0' where `documento`.`id_doc` =  '".$id_doc."'";
			}
			else
			{
				$sql="update `documento` set `documento`.`publicar_doc` =  '1' where `documento`.`id_doc` =  '".$id_doc."'";
			}
			$docum = new mydb($data_acces['host'], $data_acces['user'], $data_acces['pass'], $data_acces['db']);
			$docum->db_insert($sql);
			$error=mysql_error();
			$docum->db_close();
			
			if($error != '')
			{
				$list.='<div class="error">Lo siento, ocurrio un error en la operacion, porfavor intente de nuevo.<br />
						Si continua el error contacte con el administrador</div><br /><br />';
			}
			else
			{
				if($result[1] != '')
				{
					$result[1] = 'ha dejado de ser ';
				}
				else
				{
					$result[1] = $result[1].' ha sido ';
				}
				$list.='<div class="action">El documento '.$result[1].' publicado.</div><br /><br />';
			}
			$list.=documentos::listar($data_acces);
			return $list;
		}
		//menus que genera la accion de cada boton
		function menu($data_acces)
		{
			$list='';
			$param=explode('/',$_GET['do'],5);
			$option=$param[0];
			switch($option){
				case 'agregar':
					$list=documentos::agregar($data_acces);
				break;
				case 'agregar_doc':
					$list=documentos::agregar_doc($data_acces);
				break;
				case 'modificar':
					$list=documentos::modificar($data_acces);
				break;
				case 'modificar_doc':
					$list=documentos::modificar_doc($data_acces);
				break;
				case 'eliminar':
					$list=documentos::eliminar($data_acces);
				break;
				case 'publicar':
					$list=documentos::publicar($data_acces);
				break;
				default:
					$list=documentos::listar($data_acces);
			}
			return $list;
		}
		//funcion que muestra el menu de navegacion
		function menu_nav($data_acces)
		{
			$tmenu = new template;
			$tmenu->set_template('lib/html/navegation/navegation.html');
			$tmenu->show();
			return $tmenu->show();
		}
		//contenido del sidebar
		function sidebar($data_acces){
			$list='';
			$list.=sidebar::show_page($data_acces);
			return $list;
		}
		//function que estructura la pagina para ser mostrada
		function show_page($data_acces)
		{
			$tdocumentos = new template;
			$tdocumentos->set_template('lib/html/index.html');
			$tdocumentos->set_parameter('nav_bar', documentos::menu_nav($data_acces));
			$tdocumentos->set_parameter('content_page', documentos::menu($data_acces));
			$tdocumentos->set_parameter('content_sidebar', documentos::sidebar($data_acces));
			return $tdocumentos->show();
		}
	}
	
	$document=new documentos;
	echo $document->show_page($data_acces);
?>